package com.sharding.algorithm;

import org.apache.shardingsphere.api.sharding.complex.ComplexKeysShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.complex.ComplexKeysShardingValue;

import java.util.Collection;


/**
 *
 * sharding jdbc的分片策略
 *
 *StandardShardingStrategy（标准分片策略）
 * 这是最常见的分片策略，使用一个分片键（sharding key）和一个分片算法（sharding algorithm）来确定数据应该存储在哪一个数据源或表中。
 * 例如，你可以基于用户的 ID 将数据分片到不同的数据库或表中。
 * ComplexShardingStrategy（复杂分片策略）
 * 当需要使用多个分片键进行分片时，这种策略就变得有用。
 * 它允许你定义一个自定义的分片算法，可以考虑多个列值来决定数据的归属。
 * NoneShardingStrategy（无分片策略）
 * 当某个表不需要分片时，可以使用此策略。
 * 所有的数据将被路由到一个指定的数据源或表中，而不进行任何分片。
 * InlineShardingStrategy（内联分片策略）
 * 这是一种特殊的分片策略，用于简单的分片场景，其中分片键和分片规则是静态和明确的。
 * 例如，你可以直接指定使用用户 ID 的模运算结果作为分片的依据。
 * RangeShardingStrategy（范围分片策略）
 * 这种策略用于处理范围查询，例如日期范围或数字范围。
 * 它可以确保当查询涉及一个范围时，Sharding-JDBC 能够智能地识别哪些分片包含该范围内的数据，从而减少不必要的数据扫描。
 * PreciseShardingStrategy（精确分片策略）
 * 这种策略用于处理精确匹配的查询，例如基于某个具体的分片键值查找数据。
 * 它确保只有包含该分片键值的数据源或表会被查询，提高了查询效率。
 * 在实际应用中，你可能需要根据你的数据模型和查询模式选择合适的分片策略。Sharding-JDBC 允许你为每个逻辑表定义不同的分片策略，这样可以针对不同的数据集采用最适合的策略，从而优化数据库的性能和可扩展性。此外，Sharding-JDBC 还提供了编写自定义分片算法的能力，这使得你可以针对特定的业务需求定制分片逻辑。
 *
 *
 */
public class OrderShardingByUser implements ComplexKeysShardingAlgorithm {
    @Override
    public Collection<String> doSharding(Collection collection, ComplexKeysShardingValue complexKeysShardingValue) {
        return null;
    }
}
